package secondDay;

import java.util.HashMap;
import java.util.Map;

public class singleNumber {

    public static void main(String[] args) {
        int[] qes = {0,1,0,1,0,1,100};
        System.out.println(singleNumber(qes));
//        int a = 5^5^5;
//        System.out.println(a);
    }

    public static int singleNumber(int[] nums) {
        //solution 1:哈希
//        Map<Integer, Integer> hash = new HashMap<Integer, Integer>();
//        for (int num : nums) {
//            hash.put(num, hash.getOrDefault(num,0) + 1);
//        }
//        int ans = 0;
//        for (Map.Entry<Integer, Integer> entry : hash.entrySet()) {
//            if (entry.getValue() == 1){
//                ans = entry.getKey();
//                return entry.getKey();
//            }
//        }
//
        //solution 2 位运算
        int ans = 0;
        for (int i = 0; i < 32; i++) {
            int total = 0;
            for (int num : nums) {
                total += ((num >> i) & 1);
            }
            if (total % 3 != 0){
                ans |= (1 << i);
            }
        }
        return ans;
    }
}
